Motion estimation is the biggest bottleneck in terms of computational load for many conventional video encoders, because it requires processing over multiple estimated frames and multiple partition types. Numerous fast motion estimation techniques have been proposed to speed up video encoder processes. A majority of these techniques skip most search candidates that are considered unlikely to be the best match in order to reduce the overall complexity of the motion estimation technique.
Unlike full search techniques, where a search window dictates the required search operations, fast motion estimation techniques typically require a different level of complexity for different inputs. This requirement makes fast motion estimation techniques difficult to implement in hardware where timing requirements are stringent. This difficulty is exacerbated in encoders such as the known H.264 encoder, where the fast motion estimation must be performed repeatedly for every partition type and reference picture combination (which results in a larger variation of complexity from macroblock to macroblock).
Therefore, there is a need in the art for a scalable method and apparatus for fast motion estimation that efficiently speeds up the video encoding process.